/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.distribuidos.interfaz;

import co.edu.distribuidos.mundo.Archivo;
import java.awt.BorderLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author alvar-go@uniandes.edu.co
 */
public class PanelBusqueda extends JPanel implements MouseListener{

   private final static String[] ENCABEZADOS = {"Nombre", "Tipo", "Tamaño", "Origen"};

   private final static String BUSCAR = "Buscar";

   private DefaultTableModel modeloTabla;

   private JTable tablaResultados;

   private JRadioButton rbTodos;

   private JRadioButton rbDocumentos;

   private JRadioButton rbAudio;

   private JRadioButton rbImagenes;

   private JRadioButton rbTamanio;

   private ButtonGroup grupo;

   private JTextField txtBusqueda;

   private JButton btBuscar;

   private InterfazSistemaDocs principal;

   public PanelBusqueda(InterfazSistemaDocs interfaz){
       setLayout( new BorderLayout());
       principal = interfaz;

       JPanel infoBusqueda = new JPanel( new GridLayout(20,1));
       infoBusqueda.setBorder( new TitledBorder("Busqueda"));

       txtBusqueda = new JTextField();
       infoBusqueda.add(txtBusqueda);

       grupo = new ButtonGroup();

       rbTodos = new JRadioButton("Todos");
       grupo.add(rbTodos);
       infoBusqueda.add(rbTodos);

       rbDocumentos = new JRadioButton("Documentos");
       grupo.add(rbDocumentos);
       infoBusqueda.add(rbDocumentos);

       rbAudio = new JRadioButton("Audio");
       grupo.add(rbAudio);
       infoBusqueda.add(rbAudio);

       rbImagenes = new JRadioButton("Imagenes");
       grupo.add(rbImagenes);
       infoBusqueda.add(rbImagenes);

       rbTamanio = new JRadioButton("Por tamaño");
       grupo.add(rbTamanio);
       infoBusqueda.add(rbTamanio);

       btBuscar = new JButton(BUSCAR);
       btBuscar.setActionCommand(BUSCAR);
       infoBusqueda.add(btBuscar);

       add(infoBusqueda, BorderLayout.WEST);

       tablaResultados = new JTable();
       modeloTabla = new ModeloTablas(ENCABEZADOS, 0);
       tablaResultados.addMouseListener(this);
       tablaResultados.setModel(modeloTabla);
       JScrollPane scroll = new JScrollPane(tablaResultados);
       scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
       scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
       scroll.setBorder(new TitledBorder("Resultados"));
       add(scroll, BorderLayout.CENTER);
   }

   public void actualizarTabla(ArrayList<Archivo> archivos){
       modeloTabla = new ModeloTablas(ENCABEZADOS, 0);
       String[] fila;
       for(int i = 0; i < archivos.size(); i++){
           fila = new String[4];
           Archivo actual = archivos.get(i);
           fila[0] = actual.darNombre();
           fila[1] = actual.darExtension();
           fila[2] = actual.darTamanio() + "";
           fila[3] = actual.darPropietario();
           modeloTabla.addRow(fila);
       }
       tablaResultados.setModel(modeloTabla);
   }

    public void mouseClicked(MouseEvent e) {
        int clicks = e.getClickCount();
        if( clicks == 2 ){
            int fila = tablaResultados.getSelectedRow();
            if( fila >= 0){
                String nombre = (String)tablaResultados.getValueAt(fila, 0);
                String propietario = (String)tablaResultados.getValueAt(fila, 3);
                principal.descargarArchivo(nombre, propietario);
            }
        }
    }

    public void mousePressed(MouseEvent e) {
       //
    }

    public void mouseReleased(MouseEvent e) {
        //
    }

    public void mouseEntered(MouseEvent e) {
       //
    }

    public void mouseExited(MouseEvent e) {
        //
    }

}
